package cn.psvmc.cxzapi.service.market;

import cn.psvmc.cxzapi.config.mybatisplus.service.impl.AbstractService;
import cn.psvmc.cxzapi.exception.ServiceException;
import cn.psvmc.cxzapi.mapper.market.TBannerMapper;
import cn.psvmc.cxzapi.model.common.MarketEntity;
import cn.psvmc.cxzapi.model.market.TBanner;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

/**
 * Banner 实例表 服务实现类
 * @Author auto
 * @Date 2024-08-13
 */
@Service
public class TBannerService extends AbstractService<TBannerMapper, TBanner> {

    @Resource
    private TBannerMapper tBannerMapper;

    /**
    * @Date auto 2024-08-13 新增Banner 实例表
    * @Param tBanner Banner 实例表
    * @Return int
    */
    public int add(TBanner tBanner){
        return tBannerMapper.insert(tBanner);
    }

    /**
    * @Date auto 2024-08-13 更新Banner 实例表
    * @Param tBanner Banner 实例表模型
    * @Return int
    */
    public int edit(TBanner tBanner){
        // 通过id查询数据处理 详情
        TBanner originTBanner = this.detail(tBanner.getBannerId());
        if(originTBanner == null){
            throw new ServiceException("未查询到对应的Banner 实例表信息！");
        }

        // 比较数据版本号
        if(!originTBanner.getRversion().equals(tBanner.getRversion())){
            throw new ServiceException("数据已更新，请刷新后重试！");
        }

        // 字段为null 不更新
        return tBannerMapper.updateById(tBanner);
    }

    /**
    * @Date auto 2024-08-13 查询Banner 实例表详情
    * @Param id 唯一id
    * @Return cn.psvmc.cxzapi.model.market.TBanner
    */
    public TBanner detail(Integer id){
        return tBannerMapper.selectById(id);
    }

    /**
    * @Date auto 2024-08-13 删除Banner 实例表
    * @Param id 唯一id
    * @Param rversion 版本号
    * @Return int
    */
    public int delete(Integer id, Integer rversion){
        // 查询Banner 实例表详情
        TBanner tBanner = this.detail(id);
        if(tBanner == null){
            throw new ServiceException("未查询到对应的Banner 实例表信息！");
        }

        // 比较数据版本号
        if(!rversion.equals(tBanner.getRversion())){
            throw new ServiceException("数据已更新，请刷新后重试！");
        }

        return tBannerMapper.deleteById(id);
    }

    /**
    * @Date auto 2024-08-13 查询Banner 实例表列表
    * @Param iPage 分页
    * @Return com.baomidou.mybatisplus.core.metadata.IPage<cn.psvmc.cxzapi.model.market.TBanner>
    */
    public List<Map> listAll(MarketEntity entity){
        return tBannerMapper.listAll(entity);
    }
}
